// 引入所需的库和模块
import axios from "axios";
import router from "@/router";
import {message} from "ant-design-vue";


// 设置所有 Axios 请求的基础 URL
axios.defaults.baseURL = "http://127.0.0.1:8086";

// 创建一个具有自定义设置的 Axios 实例
let request = axios.create({
    timeout: 30000, // 设置请求的超时时间为5000毫秒
    headers: {
        'Content-Type': 'application/json;charset=utf-8' // 设置请求数据的内容类型为 JSON
    }
});

// 在发送请求之前拦截请求
request.interceptors.request.use(config => {
    // 使用本地存储中的令牌设置请求的 'Authorization' 头部
    config.headers['token'] = localStorage.getItem('token');
    return config;
});


// 在处理响应之前拦截响应
request.interceptors.response.use(response => {
    // 从响应中提取数据
    let res = response.data;
    console.log(response.data)
    // 检查响应代码是否为200（成功）
    if (res.success) {
        return response; // 如果成功，则返回响应
    } else {
        // 如果响应代码不是200，显示错误消息
        message.error(res.msg ? res.msg : '系统异常');
        return Promise.reject(res.msg); // 使用错误消息拒绝 Promise
    }
}, error => {
    console.log('error', error);

    // 处理特定的错误情况
    if (error.code === 401) {
        message.error(error.msg);
        router.push('/login'); // 如果错误代码是401（未经授权），则重定向到登录页面
    }

    console.log(error.msg);

    //  显示错误消息，持续时间为3000毫秒
    message.error(error.msg);
    return Promise.reject(error.msg); // 使用错误消息拒绝 Promise
});

// 将配置好的 Axios 实例导出，以在应用程序的其他部分中使用
export default request;
